const path = require('path')

const Koa = require('koa')
const koaBody = require('koa-body')
const koaStatic = require('koa-static')
const parameter = require('koa-parameter')


const errHandler = require('./errHandler')
const router = require('../router')

const app = new Koa()

app.use(koaBody({
 // 是否指出文件上传
 multipart: true,
 formidable: {
  // 文件保存的路径
  // 在配置option里,不推荐使用相对路径
  // 在option中的相对路径不是相对于当前文件,而是相对于process.cwd()
  uploadDir: path.join(__dirname, '../upload'),
  // 保持文件后缀名不变
  keepExtensions: true
 },
 // 使koa-body支持delete请求方式
 parsedMethods: ['POST', 'PUT', 'PATCH', 'DELETE']
}))
app.use(koaStatic(path.join(__dirname, '../upload')))
app.use(parameter(app))
app.use(async (ctx, next) => {
 console.log(':> url', ctx.url, 'method', ctx.method)
 await next()
})

app.use(router.routes())
 .use(router.allowedMethods())

app.on('error', errHandler)

module.exports = app
